<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!--
		深度监视：
				(1).Vue中的watch默认不监测对象内部值的改变（一层）。
				(2).配置deep:true可以监测对象内部值改变（多层）。
		备注：
				(1).Vue自身可以监测对象内部值的改变，但Vue提供的watch默认不可以(想让它可以则配置deep:true)！
				(2).使用watch时根据数据的具体结构，决定是否采用深度监视。
	-->
    <div id="root">
        <h1>今天天气很{{fullName}}</h1>
        <button @click="changClick">qihuan</button>
        <h1>a{{number.a}}</h1> <br>
        <h1>b{{number.b}}</h1>
        <button @click="number.a++">数字+1</button>
    </div>
    <script src="../js/vue.js"></script>
    <script>
        const vm = new Vue({
            el: "#root",
            data() {
                return {
                    ishot: true,
                    i: 0,
                    number:{
                        a:0,
                        b:0
                    }
                }
            },
            computed: {
                fullName() {
                    return this.ishot ? '炎热' : '凉爽'
                }
            },
            methods: {
                changClick() {
                    this.ishot = !this.ishot
                    this.i++
                }
            },
            watch: {
                //监视的配置对象
                //watch不仅能监视data的普通属性，也可以检测计算属性
                ishot: {
                    immediate: true, //当这个属性为true时，页面刚渲染就运行handler函数
                    //handler 什么时候调用呢
                    //当isHot发生改变就会调用该函数
                    //handler接收两个参数，一个是这个状态参数改变前的值，另一个是改变后的旧值
                    handler(newvalue, oldvalue) {
                        console.log('ishot被修改了');
                        console.log(`newValue: ${newvalue},oldvalue:${oldvalue}`);

                    }
                },
                number:{
                    deep:true,
                    handler(newvalue,oldvalue){
                        console.log(newvalue,oldvalue,'number被改变了')
                    }
                }
            },
        })
       
    </script>
</body>

</html>